package br.gov.dataprev.treinamento.ejb.controller;

import java.math.BigDecimal;
import java.util.Date;

import javax.annotation.ManagedBean;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.event.ValueChangeEvent;
import javax.inject.Named;

import br.gov.dataprev.treinamento.ejb.modelo.Endereco;
import br.gov.dataprev.treinamento.ejb.modelo.FormaPagamento;
import br.gov.dataprev.treinamento.ejb.modelo.ItemPedido;
import br.gov.dataprev.treinamento.ejb.modelo.Pedido;
import br.gov.dataprev.treinamento.ejb.modelo.PessoaFisica;
import br.gov.dataprev.treinamento.ejb.modelo.PessoaJuridica;
import br.gov.dataprev.treinamento.ejb.modelo.Produto;
import br.gov.dataprev.treinamento.ejb.modelo.Sexo;
import br.gov.dataprev.treinamento.ejb.modelo.SituacaoPedido;
import br.gov.dataprev.treinamento.ejb.service.local.FreteService;

@Named
@ManagedBean
@RequestScoped
public class Carrinho {

	private Pedido pedido;
	
	@EJB
	private FreteService freteService;
	
	@PostConstruct
	public void init() {

		PessoaFisica cliente = new PessoaFisica();
		cliente.setCpf("12345678910");
		cliente.setDataCadastro(new Date());
		cliente.setEmail("joao.silva@gmail.com");
		cliente.setNome("JOAO DA SILVA");
		cliente.setSexo(Sexo.MASCULINO);
		
		Endereco endereco = new Endereco();
		endereco.setLogradouro("AV BRASIL");
		endereco.setNumero("171");
		endereco.setComplemento("AP 101");
		endereco.setCep("12345-678");
		endereco.setBairro("DIVINO");
		endereco.setCidade("RIO DE JANEIRO");
		endereco.setUf("RJ");
		
		cliente.setEndereco(endereco);
		
		Produto p1 = new Produto();
		p1.setNome("Xoom 2 8.2\"");
		p1.setFornecedor("Motorola");
		p1.setDescricao("Tablet Motorola Xoom 2 com Android 3.2 Wi-Fi e 3G Tela 8,2\" Touchscreen e Memória Interna 32GB");
		p1.setDestaque(true);
		p1.setValorUnitario(new BigDecimal(1399.99D));
		p1.setValorPromocao(new BigDecimal(989.1));
		
		Produto p2 = new Produto();
		p2.setNome("Dock multimídia para Tablets Motorola");
		p2.setFornecedor("Motorola");
		p2.setDescricao("Doca Multimídia com 3 saídas USB e 1 saída micro HDMI para Tablets (Xoom 2 Media Edition e Xoom 2) - Motorola");
		p2.setDestaque(true);
		p2.setValorUnitario(new BigDecimal(369D));
		
		
		pedido = new Pedido();
		pedido.setCliente(cliente);
		pedido.setDataCadastro(new Date());
		pedido.setFormaPagamento(FormaPagamento.CARTAO_MASTER);
		pedido.setSituacao(SituacaoPedido.AGUARDANDO_CONFIRMACAO_PGTO);
		
		ItemPedido ip1 = new ItemPedido();
		ip1.setProduto(p1);
		ip1.setQuantidade(2);
		pedido.addItem(ip1);
		
		ItemPedido ip2 = new ItemPedido();
		ip2.setProduto(p2);
		ip2.setQuantidade(1);
		pedido.addItem(ip2);
		
		
	}

	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}
	
	public void calcularFrete() {
		
		pedido.setValorFrete(freteService.calcularFrete(pedido));
		
	}
	
	public PessoaFisica getClientePF() {
		if (pedido.getCliente() instanceof PessoaFisica) {
			return (PessoaFisica)pedido.getCliente();
		}
		return null;
	}
	
	public PessoaJuridica getClientePJ() {
		if (pedido.getCliente() instanceof PessoaJuridica) {
			return (PessoaJuridica)pedido.getCliente();
		}
		return null;
	}
	
	
	public void alterarQuantidade(ValueChangeEvent evt) {
		Integer quantidade = Integer.valueOf(evt.getNewValue().toString());
	}
	
	
}
